import request from '@/utils/request'

// 查询学校基础信息列表
export function listSchoolinfo(query) {
  return request({
    url: '/jwgl/acschoolinfo/list',
    method: 'get',
    params: query
  })
}

// 查询学校基础信息详细
export function getSchoolinfo(id) {
  // 参数类型检查和转换
  if (typeof id === 'string' && id === 'current-semester') {
    console.error('错误：不能将\'current-semester\'作为id参数传递给getSchoolinfo函数');
    return Promise.reject(new Error('参数错误：id必须是数字类型，不能是\'current-semester\''));
  }
  
  // 确保id是数字类型
  const numericId = Number(id);
  if (isNaN(numericId) || numericId <= 0) {
    console.error('错误：id参数必须是有效的正整数，当前值：', id);
    return Promise.reject(new Error('参数错误：id必须是有效的正整数'));
  }
  
  return request({
    url: '/jwgl/acschoolinfo/' + numericId,
    method: 'get'
  })
}

// 新增学校基础信息
export function addSchoolinfo(data) {
  return request({
    url: '/jwgl/acschoolinfo',
    method: 'post',
    data: data
  })
}

// 修改学校基础信息
export function updateSchoolinfo(data) {
  return request({
    url: '/jwgl/acschoolinfo',
    method: 'put',
    data: data
  })
}

// 删除学校基础信息
export function delSchoolinfo(id) {
  return request({
    url: '/jwgl/acschoolinfo/' + id,
    method: 'delete'
  })
}

// 获取当前学期
export function getCurrentSemester() {
  return request({
    url: '/jwgl/acschoolinfo/current-semester',
    method: 'get'
  })
}

// 根据学期获取对应的学校信息ID
export function getSchoolInfoIdBySemester(semester) {
  // 如果传入的是'current-semester'，先获取当前学期信息
  if (semester === 'current-semester') {
    return getCurrentSemester().then(response => {
      const currentSemesterData = response.data;
      // 假设返回的数据中包含学校信息ID，如果没有则使用默认ID 1
      return currentSemesterData.schoolInfoId || 1;
    });
  }
  
  // 学期到ID的映射表（根据实际数据库数据调整）
  const semesterToIdMap = {
    '2024-2025-1': 1,
    '2024-2025-2': 1,
    '2023-2024-1': 1,
    '2023-2024-2': 1
  };
  
  const schoolInfoId = semesterToIdMap[semester] || 1;
  return Promise.resolve(schoolInfoId);
}

// 安全的获取学校信息函数（支持学期参数）
export function getSchoolinfoSafe(idOrSemester) {
  // 如果传入的是学期字符串，先转换为对应的ID
  if (typeof idOrSemester === 'string' && (idOrSemester === 'current-semester' || idOrSemester.includes('-'))) {
    return getSchoolInfoIdBySemester(idOrSemester).then(id => {
      return getSchoolinfo(id);
    });
  }
  
  // 否则直接调用原函数
  return getSchoolinfo(idOrSemester);
}